# -*- coding:utf-8 -*-
# title           :
# description     :
# author          :Python超人/三月三提供
# date            :2024-08-04
# link            :https://gitcode.net/pythoncr/
# python_version  :3.9
# ==============================================================================
from 神笔码靓.码靓库.手机.手机绘图板 import 手机绘图板
from 神笔码靓.神笔库.定义集 import *
from 神笔码靓.神笔库.神笔绘图板 import 神笔绘图板
from 神笔码靓.神笔库.通用工具集 import *


class 手机水珠主题壁纸(手机绘图板):

    def __init__(self, 作品文件路径, 背景颜色="#DB5B1C", 水珠大小=200, 显示整机=否, 显示状态栏=是,
                 锁屏=是,锁屏字体颜色=颜色.白色, 手机颜色="#163844"):
        self.屏幕宽, self.屏幕高 = 屏幕分辨率.我的手机()
        super(手机水珠主题壁纸, self).__init__(作品文件路径=作品文件路径,
                                       显示整机=显示整机, 显示状态栏=显示状态栏, 锁屏=锁屏,锁屏字体颜色=锁屏字体颜色,手机颜色=手机颜色)
        # self.显示图框()
        self.已有的矩形范围 = 列表()  # 用于记录已生成水珠的范围
        self.背景颜色 = 背景颜色
        self.水珠大小 = 水珠大小

    def 检测矩形区域是否重叠(self, 新矩形的x, 新矩形的y, 新矩形的宽, 新矩形的高):
        """
        新矩形的 x,y,宽,高
        :param 新矩形的x: 新矩形的 x
        :param 新矩形的y: 新矩形的 y
        :param 新矩形的宽: 新矩形的宽
        :param 新矩形的高:新矩形的高
        :return:
        """
        for (x, y, 已有的矩形宽, 已有的矩形高) in self.已有的矩形范围:
            # 判断新矩形是否和已有的矩形范围重叠
            if (新矩形的x < x + 已有的矩形宽 and 新矩形的x + 新矩形的宽 > x and
                    新矩形的y < y + 已有的矩形高 and 新矩形的y + 新矩形的高 > y):
                # print("重叠了")
                return True  # 重叠
        return False  # 不重叠

    def 批量生成水珠(self, 水珠大小=50, 嵌入物体=None):
        水珠模板 = self.神笔模板("水珠", 大小=水珠大小, 嵌入物体=嵌入物体)
        # 以下生成水珠的位置是随机的，避免没有位置可放水珠，导致的死循环，生成的水珠可能会小于范围给定值
        for i in 范围(200):
            重叠计数 = 100  # 避免死循环
            while 重叠计数 > 0:
                随机位置x = 获取范围内随机整数(50, self.屏幕宽 - 水珠大小 * 2 - 50)
                随机位置y = 获取范围内随机整数(50, self.屏幕高 - 水珠大小 * 2 - 50)
                随机大小 = 获取范围内随机整数(50, 200) / 200
                随机变形 = 获取范围内随机整数(90, 110) / 100

                # 计算获取水珠的矩形范围
                水珠范围X, 水珠范围Y, 水珠范围宽, 水珠范围高 = \
                    随机位置x, 随机位置y, 4 * 水珠大小 * 随机大小, 3 * 水珠大小 * 随机大小 * 随机变形

                # 避免水珠重叠
                if self.检测矩形区域是否重叠(水珠范围X, 水珠范围Y, 水珠范围宽, 水珠范围高) == 否:
                    水珠模板.创造元素(x=随机位置x, y=随机位置y).缩放(随机大小, 随机大小 * 随机变形).添加到列表(self.屏幕元素列表)

                    self.已有的矩形范围.添加元素((水珠范围X, 水珠范围Y, 水珠范围宽, 水珠范围高))

                    # 调试用:画出水珠范围
                    # self.画矩形(水珠范围X, 水珠范围Y, 水珠范围宽, 水珠范围高)
                    break  # 生成成功，退出循环
                else:
                    重叠计数 -= 1

    def 创作(self):
        self.画矩形(x=0, y=0, 宽=self.屏幕宽, 高=self.屏幕高, 填充颜色=self.背景颜色).添加到列表(self.屏幕元素列表)
        # 反光物体 = self.神笔模板("超级玛丽", 显示帽子=是).创造元素().缩放(0.04).平移(12300, 3000).垂直翻转().透明度(0.5)
        self.批量生成水珠(水珠大小=self.水珠大小, 嵌入物体=None)

# if __name__ == '__main__':
#     神笔 = 手机水滴主题壁纸(作品文件路径="手机水滴主题壁纸.svg")
#     神笔.完成()
#     # https://svgtopng.com/zh/  SVG 转 PNG 滤镜支持
#     神笔.生成PNG(生成方式=PNG生成方式.cairosvg, 缩放=2)  # 不支持滤镜
